keystone的PKI token 长度引发的 HTTP 400

openstack keystone的PKI token从grizzly版本开始支持,PKI token相比如传统的UUID的token,长度要增加不少,
而且如果keystone的endpoint 和service catalog越多,相应的token长度都会有所增加。

在python的eventlet默认支持长度有个限制,如果要更长的header,需要对一个属性就行修改,

1
eventlet.wsgi.MAX_HEADER_LINE

于是就爆发了一个在各个项目需要修复的bug - https://bugs.launchpad.net/keystone/+bug/1190149

社区目前采取的方式是让header的支持长度可配置:

1
2
3
4
5
cfg.IntOpt('max_header_line', default=16384,
help=_('Maximum line size of message headers to be accepted. '
'max_header_line may need to be increased when using '
'large tokens (typically those generated by the '
'Keystone v3 API with big service catalogs')),